perm filename UUO.UPD[S,DOC]67 blob sn#322006 filedate 1977-12-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00021 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	This file contains corrections, additions and updates to the UUO Manual,
C00016 00003	25. THE NEW AD & DA CONVERTERS (JAM)
C00033 00004	26. The CORE2 UUO will take the direct (error) return if you ask it
C00041 00005	38.  PDP-11 INTERFACE (19-MAY-74 -- BO)(14-apr-76)
C00048 00006	39.  File protection for disk files: the "same programmer, other
C00061 00007	51. Interrupts will NOT terminate a SLEEP UUO prematurely.  The
C00064 00008	58.  Date75	11/11/74  updated 11/22/74
C00069 00009	59. XGP default margin settings
C00079 00010	[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, SECOND EDITION.]
C00086 00011	84. Job Data Area Symbols.
C00095 00012	104. [OBSOLETE:  SEE #106]
C00101 00013	113. New line characteristics bit DMLIN, 40000,,0, means line is a Datamedia.
C00113 00014	115.  PPINFO UUO--Minor changes to bits returned in word 2 of info block.
C00121 00015	130.  UPGIOT UUO for Datamedia (DM) displays.
C00138 00016	131.  SUPERS bit (0,,100) in fourth word of SETACT table suppresses
C00157 00017	161.  Two new MTAPEs have been added for device DISK and UDP in either new or
C00165 00018	172.	The following devices have been added.  They are all on the PDP-6 (P3)
C00179 00019	173.
C00183 00020	[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
C00184 00021	177.  TTYSET function 17 (get responsible TTY) returns -1 if no TTY
C00189 ENDMK
C⊗;
This file contains corrections, additions and updates to the UUO Manual,
including new UUOs that have been added since the manual went to press.

1.  The only UUO spacewar processes on the PDP-6 can issue is the
    DISMIS UUO.  (I think any UUO given on the 6 has the effect of DISMIS.)

2.  On p. 126, the 2nd line of 1st paragraph should read "even" instead
    of "ever".

3.  In disk file protection key, read protection (2 bit) implies
    protection protection (4 bit) for any group of users.

4.  INTJEN UUO turns on bits in the interrupt mask, not in the interrupt
    enablings.

5.  Non-ARPA PTYs never run LOGOUT when logging out. ARPA PTYs do run
    LOGOUT. 

6.  RENAME can be done after ENTER without doing a CLOSE first unless
    the file being renamed is replacing an existing file (another file
    had same name when ENTER was done).  In that case a CLOSE must be
    done first (which will delete the original file).

7.  IOPUSH CHN,ID	;[OP=724]
    <pdlov>
    <channel pushed>

	Pushes io channel CHN on io pdl. Channel CHN may now be used
	without affecting the device you pushed. The ID is saved with
	the channel for use with IOPOP and IOPDL.

8.  IOPOP CHN,ID	;[OP=725]
    <stack empty>
    <success>

	Finds first channel on stack with ID searching down from top. If
	ID = 0 then uses top of stack. If not found, takes error return.
	Releases channel CHN, places the device from the stack into that
	channel, and compresses that entry out of the stack.

9.  IOPDL N,ID		;[OP=726]

	IOPDL 0,

		Does IOPOP for each device on the io pdl. The channel it
		uses is the same one the device was pushed from.

	IOPDL 1,

		Releases all devices from stack without affecting devices
		not currently pushed on stack.

	IOPDL 2,ID
	<error return>
	<device released>

	    Finds device with ID same as for IOPOP, then releases it
	    without affecting any other devices. The stack is compressed.

10. MOVE AC,[CODE,,JOB #]
    GETPRV AC,			;[OP=047, ADR=400115] CALLI 400115
    <always return here>

	If job # illegal, uses current job.

	CODE = 0
		Get active privileges for job #.  Return them in AC.
	CODE = 1
		Get passive privileges for job #.  Return them in AC.
	CODE = 2
		Get temporary privileges for job #.  Return them in AC.

11. TTYSKP CHN,			;[OP=047, ADR=400116] CALLI 400116

	If no device on channel CHN, "IO TO UNASSIGNED CHANNEL" error.
	If not TTY, never skip.
	If TTY, will skip if next input will not hang.

12. MOVEI AC,ADDR
    DIAL AC,			;[OP=047, ADR=400117] CALLI 400117
    <error return, error code in AC>
    <success return>

    ADDR:   DIALER #,,FUNCTION CODE
	    <any further args as needed>

    Error codes:

      0  Illegal dialer #.
      1  Dialer in use by someone else.
      2  Don't meet ownership requirements (currently, don't have TTY11
	 inited)
      3  Attempt to dial while call in progress (should hang up first)
      4  Dialing failure.

    Function codes:

	0  Claim dialer. Must be done before any other function can be
	   performed with this dialer #.

	1  Get dialer status. Returns in AC:

		<last interrupt coni>,,<current coni>

	2  Dial a number. ADDR+1 is area code in the following format:

		Bit 0	     17 18 21 22 25 26 29 30    35
		   __________________________________________
		   |	          |     |     |     |       |
	   Digit   |	          |  1  |  2  |  3  |       |
		   |______________|_____|_____|_____|_______|

	   ADDR+2 is the rest of the number in this format:

	   Bit      0   5 6 7 8  11 12 15 16 19 20 23 24 27 28 31 32 35
	           _____________________________________________________
	           |     | | |     |     |     |     |     |     |     |
	   Digit   |     |A|V|  1  |  2  |  3  |  4  |  5  |  6  |  7  |
	           |_____|_|_|_____|_____|_____|_____|_____|_____|_____|

	   A on, dial area code.

	   V on, call is "VOICE" call. Will switch to AD/DA when call
	           completed. Not implemented yet!

	3	Hang up.

	4	Release dialer (automatically done if you release TTY11).

13. LOOKUP followed by ENTER now updates date/time in UFD entry for file.

14. RUNMSK is now a no-op (may become illegal soon).

15. WHO AC,		;[OP=047, ADR=400112] CALLI 400112

    AC right should contain address of 22-word block for returned asciz
        string. 
    If AC left contains legal job #, return who line for that job as
	asciz text. 
    If AC left = 0 or > legal job #, return who line for current job.
    If AC left < 0, return system who line.
    If no job for legal job #, returns null string.

16. TTYJOB AC,		;[OP=047, ADR=400113] CALLI 400113

    If AC is 0 to max TTY line number, returns in AC the job # of owner.
    Sign bit will be on if this is not owners "console".
    If AC is -<PTY line #>, returns in AC the job # of job controlling PTY.
    All other args return 0 in AC.

17. PTYs are initialized with bits 6 (PTYLIN), 10 (PTYUSE), 13 (FCS)
    and 16 (XON) (4222,,0 bits) on in the line characteristics.  The UUO
    manual (p. 48) does not mention the FCS bit being on for a new PTY.

18. In the UUO manual on the first line of p. 148 (section 13.3), it
    should say "(bit 28)" instead of "(bit 31)" (bit to set to get error
    return instead of error message when LPT is hung).

19. IMP MTAPE 13 (Bless Host) is now a no-op since there is no longer
    a system table of dead hosts.  All hosts are assumed alive except for
    an instant after the IMP network has returned a Host Dead message in
    response to an attempt by us to send that host a message.

20. PPACT does erase all deactivated pieces of paper even on
    Data Discs.  See also note number 56 in this file.

21. When doing 8-bit byte buffered IMP output, any of the four bytes
    in the last used word in any buffer can be suppressed from being
    transmitted to the IMP by setting the corresponding bit of the low
    order four bits of the same word.  For example, if the word pointed
    to by the byte pointer in your output buffer header contains
    776655,,443307, then only the first (high-order) byte of this word
    will be transmitted.  That is,
      bit 32 (0,,10 bit) suppresses the first byte  (776000,,0 byte),
      bit 33  (0,,4 bit) suppresses the second byte (001774,,0 byte),
      bit 34  (0,,2 bit) suppresses the third byte  (3,,770000 byte),
      bit 35  (0,,1 bit) suppresses the fourth byte (0,,007760 byte).

22. The DEVNUM UUO is listed four times in the manual as CALLI 4000104
    whereas it should really be CALLI 400104 (deleting extra zero). 

23. The left half of each entry in the JOBJDA block of the job data
    area contains the channel-status bits, as returned (in the right half
    of an AC) by the CHNSTS UUO.  However, these bits and the device data
    block (DDB) address in the right half are not kept up to date by the
    system.  These cells are guaranteed correct only when your job is not
    running; they will in general also be correct if you have not done
    any I/O since the beginning of the current quantum of run time.

24. The left half of a TTY's entry in TTYTAB (see monitor pointers)
    contains the number of the next TTY in the given TTY's talk ring, if
    that TTY is in a talk ring; when a TTY is not in a talk ring, the
    left half of its TTYTAB entry contains the TTY's own line number.
25. THE NEW AD & DA CONVERTERS (JAM)

The new analog-to-digital converter (ADC) and digital-to-analog
converter (DAC) are devices on the PDP-6's IO bus which may be
operated in dump mode (17) only. They provide input and output of
digitized waveforms conventionally representing speech, music, or
other acoustical signals.

Both the DAC and the ADC can operate in a manner such that the data
transfer UUO (INPUT, or IN, for ADC, OUTPUT, or OUT, for DAC) does
not wait for the transfer to finish before returning to the user.
This feature is enabled by the 100 bit (called CONT) in the IO status
word. In this case, the user must have three separate buffers. There
is the buffer that the device is operating on, the one that is
waiting, and the one the user is operating on. If you use just two
buffers, you may find that you are operating on the same buffer the
system is operating on. As you give data transfer UUOs, the first one
will start the transfer and return immediately. The second one will
store the IOWD and return immediately. It is not until the third one
is given that the UUO will wait. It will wait for the buffer
specified by the first UUO to become free, and start the second
buffer, before it will accept the address of the third buffer and
return.

If either the ADC or the DAC loses a sample, the LOST bit (bit 2000)
is set in the IO status word. This means a discontinuity has occured
in the signal.

The ADC can be data-triggered. By setting the CYCLE bit (bit 200) in
the IO status word, the ADC does not move beyond the first buffer,
but instead transfers continuously into the first buffer. When it
gets to the end of the first buffer, it goes back to the beginning
automatically. This process continues until a sample comes in that is
larger than some threshold (user settable). When such a sample
occurs, the system goes on to the second buffer and returns to the
user the position in the first buffer that the triggering sample
occurred. For effeciency, the compare is not made with each sample in
the word, but instead with just the high-order sample. You must be in
CONT mode to guarantee continuity between the first and second
buffers.

When the ADC in CYCLE mode goes to the second buffer, the CYCDON bit
(20 bit) is set in the IO status word. You can cause the ADC to start
cycling again by clearing this bit. This is only useful if you know
which buffer it is in. It will go into CYCLE mode on the next buffer.

The ADC and the DAC can be made to start simultaneously. This is done
by turning on the IOSYNC bit (40 bit) in the IO status words of both
devices (they are different devices, require different INITs). What
happens is that the first data transfer UUO (of either device) does
not actually start the transfer. When the first data transfer UUO for
the other device is given, then both devices will begin. Note that
either UUO (ADC or DAC) can be given first. The second UUO will start
the transfer. You must be in CONT mode for the device whose UUO is
given first, or you will not return from the UUO. The system will
only wait one minute between the two UUOs.

If you are in CYCLE mode on the ADC, and in IOSYNC mode on both
devices, you can specify that the DAC is to be started after the ADC
is advanced to the second buffer and not just at the beginning of
input. This is done by setting the IOAFT bit (bit 4000) in the ADC IO
status word. This will prevent the DAC's being started until the ADC
advances to the second buffer.

The device-specific bits of the IO status word are shown below. The
asterik represents bits that are only meaningful to the ADC.

    Bits     Octal      Mnemonic       Meaning

   *24	     4000       IOAFT	       Begin DAC only after ADC has
				       moved on to second buffer, i.e.
				       IOSYNC∧IOAFT∧CYCDON ⊃ Start DAC

    25       2000       LOST           Data missed

   *28       200        CYCLE	       Causes ADC to transfer repeatedly
				       into the first buffer until
				       some input sample exceeds a
				       preset threshold.

    29       100        CONT	       Causes system to return to the
				       user immediately from a data
				       transfer UUO.

    30       40         IOSYNC         ADC and DAC will be started
				       simultaneously.

   *31       20         CYCDON         Indicates ADC has moved from
				       first input buffer to the
				       second. Only relevant in
				       CYCLE mode.

To set parameters like sampling rate, channel multiplexing, and such,
the MTAPE UUO has been drafted to serve this special function. An
MTAPE to either the ADC or the DAC has as its effective address the
address of a 3-word (2-word for DAC) block which is formatted as
follows:


	<*CYCLE threshold>,,<Speed*1000+Packing*100+Nchans>
	<address for `RUN' flag>
	<*Input select>,,<*address for CYCLE pointer>

Speed is coded as follows:

    Code     Clock rate (per channel!!!)
     0	       6.4KHz
     1	       12.8KHz
     2	       25.6KHz
     3	       51.2KHz (Highest ADC rate)
     4	       102.4KHz
     5	       204.8KHz

Packing is coded as follows:

    Code     Packing mode
     0        12-bit two's complement bytes packed 3 to a word
     1	      18-bit two's complement bytes packed 2 to a word
     2        9-bit incremental floating-point bytes packed 4 to a word
		(DAC only)

Note that the 18-bit byte has only 16 significant bits for the DAC
and only 14 significant bits for the ADC. In the DAC, the low order 2
bits of each byte are ignored. In the ADC, the low order 4 bits of
each byte are set to zero.

These packing modes are diagrammed below:

12-bit mode (code 0):
____________________________________________________________
|0                11|12              23|24               35|
|   SAMPLE 1        |     SAMPLE 2     |     SAMPLE 3      |
|___________________|__________________|___________________|

18-bit mode (code 1):
____________________________________________________________
|0                        17|18                          35|
|           SAMPLE 1        |          SAMPLE 2            |
|___________________________|______________________________|

9-bit mode (code 2, DAC only):
____________________________________________________________
|0   3|4     8|9  12|13    17|18 21|22   26|27 30|31     35|
| EX1 | MANT1 | EX2 | MANT2  | EX3 | MANT3 | EX4 |  MANT4  |
|_____|_______|_____|________|_____|_______|_____|_________|

This last mode is called Incremental floating point (abbreviated IFP
mode). Each 9-bit byte is decoded into a 4 bit exponent and a 5-bit
mantissa. The mantissa is shifted left the number of places
represented by the number in the exponent and is added into the
current position of the DAC to produce the new position. The sign bit
is inferred from the mantissa, it is not explicit. The sign bit is
taken to be the complement of the high order mantissa bit, and is
spread throughout the number before the shifting occurs.

To restate, the DAC has, for each channel, a 16 bit register, called
the FLTMEM register. These registers are cleared at the beginning of
a transfer. In IFP mode, a 9-bit byte is unpacked from the input
word. The high order 4 bits of that byte go into a counter, the low
order 5 bits go into the low-order 5 bits of a 21 bit (16+5) shift
register. The complement of the high order bit of the mantissa is
stored in the high-order 16 bits of that 21-bit shift register. This
entire register is shifted left the number of places (0 to 15)
represented by the number currently in the counter (the exponent).
The high order 16 bits of this register are then added into the
FLTMEM register for this channel and the sum is stored back into the
FLTMEM register. This sum is also delivered to the DAC.

Notice that this means that a 9-bit byte with all bits zero does not
represent a change of zero in the FLTMEM register. A zero byte will
infer a sign bit of 1, which will be spread throughout the word and
will result in a word of -1. 20 is the `official' code for zero. This
has the high order bit of the mantissa on and all other bits zero.

Nchans is decoded as follows:
    Code      Meaning
     0         unused. Currently same as 3.
     1         Monaural (1-channel only)
     2         Stereo (2 channels)
     3         Quadraphonic (4 channels)

For multiple channels, successive samples go to successive channels.
For example, in Stereo mode (code 2), the first sample goes to
channel 1, the second sample goes to channel 2, the third sample goes
to channel 1 again, the fourth to channel 2, and so on.

In CYCLE mode for the ADC, the input is directed into the first
buffer until the high order sample in a word exceeds the threshold.
This threshold is specified in the left half of the first word of the
MTAPE block.

The right half of the second word of the MTAPE block is the address
of the `RUN' flag (may be zero to inhibit feature). When the ADC or
the DAC is started, this cell is set to -1. When the ADC or DAC is
stopped, this cell is set to 0. In this manner, one can tell when his
transfer is actually occurring. Since the ADC and the DAC are given
separate MTAPEs, they can have separate RUN flags, as well as
separate clock rates, numbers of channels, and packing modes.

The third word of the MTAPE block is only relevant to the ADC. The
right half specifies the address where the buffer pointer is to
be places in CYCLE mode. What you get is the IOWD at the point
the threshold was exceeded, relocated to a relative address within
your core image. The address part of this word (the right half)
will point to the word containing the sample that exceeded the
threshold.

The left half of the third word of the MTAPE block specifies the
input multiplexing address for the ADC. Not only are there four input
channels that are serviced sequentially, but all four channels can be
switched to an alternate four inputs. This is specified by setting
the sign bit of the third word of the MTAPE block to 1. At some point
in the future, this left half may contain an honest multiplexing
address, such that input can be obtained from any of a number of
sources, but for now, you just have the four main channels and the
four alternate channels.

Neither the ADC nor the DAC take a standard monitor dump mode command
list. The effective address of the UUO points to a single IOWD. It
does not have to be followed by a zero.
26. The CORE2 UUO will take the direct (error) return if you ask it
    to make a new upper segment for you and there are no job slots
    available.

27. PTJOBX command number 7 is CLRBFI.  It has the effect of having
    done a CLRBFI for the TTY specified by the PTJOBX.

28. LOOKUP followed by ENTER updates date, time, PPN, and job name of
    creator in file retrieval.

29. New UUO: TMPCRD [CALLI 400103] (formerly XPARMS) to read TMPCOR
    files of another job.  Calling sequence is

	MOVE AC,[<code>,,ADR]
	TMPCRD AC,
	<error return>

ADR:	<filename>,,<job number>
	IOWD BLEN,BUF
	<PPN for TMPCOR file>

BUF:	BLOCK BLEN

    Just like TMPCOR but only codes 0, 1, and 4 allowed.  Illegal UUO
    if non-allowed code; error return if no such job.
    A job number of zero, or your own job number, refers to your own
    TMPCOR files; in this case, all operations are allowed, and the
    only difference from TMPCOR is that the PPN for the file comes
    from the UUO.  If ADR+2 is zero, the login PPN (not ALIAS) of the
    specified job is used.

30. Remote users may not:
    start spacewar modules; do EIOTM; or start an interrupt program in
    IOT-user mode.  Spacewar and EIOTM
    get error messages, and interrupt programs are started ok but with
    IOT-user off.

31. MTAPE to DSK where first word of arg block is neither 'GODMOD' nor
    -1 returns the value of the uset pointer.

32. Error code number 1 to INTDMP is non-existant job number.

33. If the job name or number field in the INTIPI UUO is zero then
    your own job is assumed.

34. More complete description of new-style clock interrupts:
	Clock interrupts may be enabled by turning on the INTCLK bit
    in the interrupt enablings.  This starts the clock ticking regardless
    of the state of the interrupt mask.  If the clock interrupt should
    try to occur when it is masked off, then the bit is set in JBTIRQ
    anyway, i.e., the interrupt is pending and will occur as soon as it
    is masked on.  Disabling the clock interrupt deletes the clock
    request and any pending clock interrupt.  The time between clock
    interrupts is one tick.  The CLKINT UUO enables clock interrupts and
    and sets the time between interrupts to the effective address of the
    UUO.  It no longer masks on the interrupt so that it is possible to
    do a guaranteed indivisible operation involving clock interrupts.
    Giving this UUO also flushes any pending clock interrupts that may
    exist.  If the effective address of the UUO is zero then clock
    interrupts are disabled and any pending clock interrupt is flushed. 

35. All new interrupt system UUOs that required a 1 in the ac field to
    indicate processor 1, no longer have that restriction.

36. LINE EDITOR MOD. AFFECTING PTLOAD AND INWAIT
	If the 40000,,0  bit (bit 3) in a TTY's line characteristics word
is a 1 when a PTLOAD uuo is executed for that TTY, the line editor
passes to the program every character typed on the keyboard during
the re-edit.  These characters, including the activation character
which terminates the re-edit, appear ahead of the re-edited line, and
should be read in 9-bit mode to see the control bits.  The activation
character is followed by a character code of 400 (<meta>NULL), an
otherwise impossible code; the next character will be the first of
the re-edited line. 
	An INWAIT executed after the PTLOAD will function as usual,
returning the length of the re-edited line, unless enough characters
are typed during the re-edit to nearly fill the TTY input buffer. In
this case, the program will be activated and the INWAIT will return a
length of 0; the program should then read one or more of the
characters in the buffer (but not too many, or the re-edit will be
terminated) and loop back to the INWAIT. 
	The 40000 bit may be set and cleared by SETLIN, and is
cleared by RESET. 

37. RENAME UUO can now rename a file from one PPN to another.  This capability
    is implemented in COPY (e.g., "RENAME FOO[A,B]←BAZ[C,D]" is legal).
38.  PDP-11 INTERFACE (19-MAY-74 -- BO)(14-apr-76)

Physical device name:	ELF

See IFACE.BO[11,DOC] for details about the hardware.

You may INIT this device in dump mode (mode 17).  The IN and OUT
UUO's take a single IOWD as their operand.

I/O status bits (SETSTS/GETSTS UUO's):

Bit(s)	Name	Meaning

18	IOIMPM	Improper mode specified in INIT.
19	IODERR	An error occurred during the last data transfer
			(NXM11, BUSTO, PARITY, HUNG).
20	---	unused
21	NXM11	No response from the addressed UNIBUS location.
22	BUSTO	Interface couldn't get the UNIBUS.
23	IOACT	not used
24	BUSNIT	You lost because a Unibus reset is going on.
25	PARITY	Bad parity indication
26	HUNG	Interface is hung irretrievably
27	---	unused
28	BGRAB	Interface is holding onto the UNIBUS
		(The PDP-11 is hanging).
29	NRETRY	Don't retry on NXM11 or HUNG.

30:35	have the same meaning as in any other I/O device.

If NXM11 or HUNG is on, the system has tried 10 times before giving up
unless NRETRY is on.  It always retries 10 times on BUSTO.


OTHER UUO'S

	USETI CHN,ADR	or	USETO CHN,ADR
	<only return>		<only return>

ADR:	MODE,,BUSADR

USETI and USETO set the data transfer mode and beginning UNIBUS
address for the following IN and OUT UUO's. 

If bit 0 of the word at ADR is on, the mode is set from bits 13:17.
If bit 0 is off, the mode remains as it was before.  The mode bits are

Bit(s)	Name	Meaning

13	NOPAR	Ignore parity errors
14	GRAB	Hold on to the UNIBUS during and after the transfer -
		any error condition that sets IODERR will release the bus.
15	SGNEXT	Extend the sign of input data.
16:17		Data packing mode, decoded as:
  00	ONEWD	  one PDP-11 word per word, right adjusted
  01	TWOWD	  two words per word, right-adjusted in each halfword
  10	TWOWDR	  two per word, in right 32 bits
  11	TWOWDL	  two per word, in left 32 bits.

In the two-word modes, the higher-order PDP-11 word is the one at the
first UNIBUS address.  Sign extension has no effect in TWOWDL; it
operates on each halfword separately in TWOWD. 

If bit 17 of the contents of ADR is on, the corresponding bus address
is set from bits 18:35.  If off, the address remains where the last
IN or OUT left it, pointing to the UNIBUS address immediately
following the last word transferred.  Mote that these are word, not
byte, addresses. 


	UGETF CHN,ADR
	<only return>

ADR:	<USETI word>
	<USETO word>

UGETF reads the states of the two USET pointers and modes into a
two-word block starting at ADR.  The results are stored with bits 0
and 18 on so that a subsequent USET addressed to one of these words
will set both the mode and the bus address. 


	RELEAS CHN,
	<only return>

RELEAS resets the interface and clears its interrupt enablings, and
sets the USET pointers to 400000,,400000. 


	MTAPE CHN,ADR
	<error return>
	<normal return>

ADR:	<instruction>
	<data>

MTAPE does various things depending on the contents of ADR.  ADR+1
either contains data that will be written to the 11 or receives data
read from the 11.  In case of an error, DEVIOS contains the reason.
The general form of the <instruction> is

Bits	Meaning

0:8	Operation code
9:12	unused
13:17	mode, interpreted as in a USETI or USETO
18	unused
19:35	UNIBUS address.

The mode and address of an MTAPE have no effect on the USET pointers
or the operation of subsequent IN's and OUT's, except that the BGRAB
state of the interface (and the BGRAB bit of DEVIOS) reflect the
state left by the last operation performed. 


Op code = 1:	FILL
	<data> = <number>,,<const>

    Writes <const> into <number> words beginning at the specified address.
    Ignores mode bits 16:17.


Op code = 2:	PEEK

    Reads one or two PDP-11 words (depending on the mode) into ADR+1.


OP code = 3:	POKE

    Writes <data> into one or two PDP-11 words.


Op code = 4:	BUSREL

    Clears the interface, making it release the UNIBUS if it is in BGRAB
    mode.  BUSREL also clears the BGRAB bit in DEVIOS.  The mode and
    Bus Address bits are ignored.

Op code = 5:	PWRTRP

    Simulates a power fail trap on the pdp-11. I.E. the 11 traps thru 
    24. Note it does this 2 times, once on power down and once on power up.

39.  File protection for disk files: the "same programmer, other
project" category is no longer used.  Instead, the three categories
of protection are file owner (700 bits), other local users (070
bits), and other remote users (007 bits).  The meaning of individual
bits is unchanged within each category for files other than UFDs.
The bits in the protection code for a UFD now affect protection for
files in that UFD, i.e., 4 bit prevents protection change for all
files in the UFD, 2 bit prevents LOOKUPs in the UFD and also prevents
reading the UFD as a file, and the 1 bit prevents ENTERs and RENAMEs
(except protection change) in the UFD.  As in the file protection
code, the 400 and 200 bits are ignored by the monitor.  ENTER or
RENAME of a UFD is illegal except that privileged programs (i.e.,
LOGIN and LOGOUT) can create new UFDs or delete old ones.  Only the
owner of a UFD can change its protection (except for privileged
programs).  Anyone may read the MFD but no one may modify it.  Also,
there is a "default file protection code" associated with each UFD.
An ENTER of a new file with a user-specified protection of zero uses
this default value.  An ENTER which is replacing an existing file
retains the old protection code if the user-specified code is zero.
The default file protection code for a UFD can only be set by LOGIN.
The values used for new UFDs are 005 for the UFD protection and 000
for the default file protection.  Thus remote users may not write
files in most UFDs. 

40.  The IMPBIT in the line characteristics word for a terminal (1000,,0)
can be set but not cleared by the user (by SETLIN or PTSETL).  That is,
once you set it, you're stuck with it.

41.  Anything which unpurifies an upper segment (e.g., UNPURE UUO) also
changes its jobname by shifting it right one character (six bits), so
that the pure, sharable version will still have a unique name.

[42 is obsolete now!!!!!]
42.  Bit 29 (100) must be on in any INIT, OPEN or SETSTS to the UDP to
denote old-format UDP service.  (A new format is being planned.)
[No longer true!!!]

43.  Error reponse from the XGP/Font Compiler has been expanded.
Case of MTAPE function 0,  ADR+1 contains 4,  ADR+2 contains 3, and
if ADR+3 contains either 3, 4 or 7 then ADR+4 will contain the octal
value of the last character assembled (or possibly the current character
being assembled).

44.  P121 FBWRT UUO.  Should say MOVEI AC,<band number> rather than
MOVEI AC,<logical fast band number>

45.  P122 next to last line.  Should read ....  If you
rather than ...  If you have

46.  The DEVCHR UUO for a UDP now returns bits 18 and 19 as the OR of the
ASSCON and ASSPRG bits of all DDBs for that UDP.  Bit 12 (available to
this job) is also set properly, i.e., the bit is on if the UDP is unused,
public, or private and owned by this job.  Note that in a DEVCHR for DSK
or IMP, bits 18 and 19 will always be zero, since they are copied out of
the model DDB.  If the UDP is in new mode (see 48 below), the DVDSK bit
(bit 1) will be on as well as the DVUDP bit (bit 2).

47.  The DEVUSE UUO for a UDP returns, in bits 12:17, the job number of
the UDP's owner, if any.  A zero in this field but bit 0 on MAY NOT
mean detached from system for a UDP, but rather assigned as public.
To be sure, check bit 7, which will be on for detached UDPs.  The
following extra bits are set for UDPs:
	3   40000,,0   ASSIGNed by this job
	4   20000,,0   INITed by this job
	5   10000,,0   ASIGNed by some other job
	6    4000,,0   INITed by some other job
	7    2000,,0   ASSIGNed as PRIVATE pack (by someone)
If bits 12:17 are zero, and bits 6 and 7 are one, the UDP is being used
as the swapping device.  Again, note that the information returned for
DSK or IMP is wrong.

48.  UDPs may now be used in "old" or "new" mode.  Old mode is like
before; new mode is just like DSK, with the following exceptions:
a.  MTAPEs which refer to absolute disk addresses are taken relative
to the first track (the SAT track) of the particular UDP used, and
are limited to the extent of that one UDP.  (DSK MTAPEs still allow
all tracks to be used, including UDP tracks.)
b.  The SATID for a UDP is a SIXBIT name which is intended to agree
with the name written on the pack label.  This is not to be confused
with the UDP password.
c.  The last track of the UDP is still used for a password, as in
old mode; however, the password need not be given for new-mode
operations, which are protected by the same scheme as on DSK.  The
UDP password is also stored as the [1,1] password.
	It is illegal to INIT a UDP unless you have ASSIGNed it
first.  The ASSIGN command for UDP, unlike other devices, does not
necessarily prevent access by other users.  There are three ways
of ASSIGNing a UDP:
    PUBLIC -- new mode, other jobs may use the UDP.
    PRIVATE -- new mode, other jobs may not use the UDP.
    OLD -- old mode, other jobs may not use the UDP.
(The syntax of the ASSIGN command is ASSIGN [mode] dev [logname] ;
items in brackets are optional, default mode is PUBLIC.)  The
mode may be changed between PUBLIC and PRIVATE by new ASSIGN
commands except that you must be the only user of the UDP to make
it PRIVATE.  However, to change between old and new modes, you
must first deassign the UDP (there must be no DDBs for it).
The mode specified in the ASSIGN command controls the use of the
UDP; hence, the 100 bit in the INIT is no longer used.
	A pack to be used in new mode must first be formatted.
(I.e., must have SAT and MFD.)  Once a pack has been formatted,
attempts to write on it in old mode will fail unless you have
UDPPRV.  Old mode reading is ok.  (So much for read protecting
UDP files.)  Attempts to read or write in new mode on an
unformatted UDP will, of course, fail.
	The scratch/swapping pack has password *SWAP*.  This
password is treated specially by the monitor in two ways: a zero
password is accepted in an old-mode ENTER, and it is impossible
to change the password (old-mode RENAME will fail).

49.  Two new MTAPEs for DSK and file-structured UDP:
	MTAPE CHN,[	'GODMOD'
			22
			ADDR]
will store the number of free tracks on the UDP (or in the file
system for DSK) as typed by the RESO command.  This is the number
of tracks before the monitor will not allow an ENTER, which is
=200 tracks before the structure is really full.  Also,
	MTAPE CHN,[	'GODMOD'
			23
			ADDR]
stores the SATID of the structure.  Both store into user address ADDR.

50.  Device VOD		REG 8/16/74

The voice synthesizer (VODER) has device name VOD.  Mode 10 (octal)
is the only legal mode.  The buffer size is 20 (decimal) data words.
The data in the user's buffer is sent directly to the voder.

The Voder interface interprets each word as four 9-bit bytes.  The
400 bit of each byte is the valid bit. The other eight bits represent
a phoneme.  Care should be taken to avoid the phoneme with value zero,
because this will cause the voder to stop, and the rest of the buffer-full
will not be transmitted until later, and data may become lost.

For a description of the correspondence between phonemes and byte-values,
see section 21 of the facility manual, FACIL.TED[H,DOC]

DEVCHR of VOD is DVOUT and a bit for mode 10.  There is no special DEVCHR
bit for the voder.  Only the UUOs  OPEN (and INIT), OUT (and OUTPUT),
CLOSE and RELEAS are valid for the voder.  LOOKUP, ENTER, RENAME, and MTAPE
are no-ops.

51. Interrupts will NOT terminate a SLEEP UUO prematurely.  The
    SLEEP will run to completion unless a UWAIT is done at
    interrupt level when the SLEEP is in progress.  The comment
    in the manual under the SLEEP UUO that says an interrupt
    will terminate the SLEEP immediately is WRONG.

52. The definitions on pp. 104-105 of the manual of the bits
    INTPTO and INTPTI are reversed.  The descriptions of what
    the bits mean are correct, but the bit values are interchanged.
    INTPTO is really bit 8 (1000,,0) and INTPTI is bit 5 (10000,,0).

53. When a new job is started up with the SWAP UUO, the privilege bits
    of the old job are copied to the new job if the new job is getting
    the login PPN of the old job.  Otherwise, the new job's privileges
    are cleared.

54. Correction to manual. Mode 16 for MTAs is exactly the same as mode 17.

55. In Appendix 1 of the UUO Manual (III Display Processor), under
    the CHR Instruction on p. 191, change the character octal 177 generates
    to a Circumflex (instead of a backslash).

56. The PPSEL UUO normally does a PPACT with only the newly selected PP
    activated.  This can now be inhibited by turning on the 400000 bit in
    the PP number.  Thus PPSEL 1 will do a PPACT 200000 but PPSEL 400001
    will not.  Also, contrary to what the manual says, PPACT on a Data
    Disc does erase any PPs turned off (de-activated).

57. Clarification: The suppress Control-CR (set via SETACT) is effective
    even if the terminal is not in special activation mode.  Same goes for
    other special low-order bits in the last word of activation table.

58.  Date75	11/11/74  updated 11/22/74

January 4, 1975 is the last date representable in the old PDP-6 format
date field.  The following changes have been implemented to extend the
dates for an additional 77 years.

1. DATE UUO [CALLI 14]
        returns a 15 bit date, instead of 12 bits as previously documented.

2. Disk file dates
	LOOKUP and RENAME have been changed to use bits 18-20 of
	the second (extension) word of the argument block as the high bits
	of the date last written.  The low bits of the date last written
	are bits 24-35 of the third word.

3. Dectapes (PDP-6 format)
	LOOKUP returns the date in bits 24-35 of the third word
	and bits 18-20 of the second word.
	RENAME accepts a date in the same format.
	ENTER ignores the date entirely; files always get their
	date set to the current date by ENTER.

	Note that the 15-bit date will actually be stored in bits
	21-35 of the third word of the directory entry, and the split
	field in LOOKUP and RENAME arguments is only for compatability
	with the disk UUOs.  Note that people who try to interpret the
	data returned by LOOKUP should avoid being confused by the high
	order date field which is returned in (bits 18-20 of) the halfword
	which formerly contained only the first block number of the file (now
	confined to bits 21-35).

	ENTER, by the way, returns the block number of the first block of
	the file in bits 21-35 of the second word.

4. Dectapes (PDP-10 format)
	The extra date bits are smeared in the extra bit of the slot words.
	The format is too horrible to explain here, see REG if you really
	want to know.  This affects only user programs since pdp-10 dectapes
	are not supported by the system.  The programs 	6TO10, 10TO6, and
	DMAN are NOT supported and will be not be converted.  TENDMP will
	be supported for PDP-10 dectape manipulation.

5. DSKTIM UUO
     [Added 11/21/74]  This UUO does NOT and will not return the correct
     date after Jan 5, 1975.  The date field returned by this UUO is
     constrained to 12 bits.  For a single UUO to get the date and time
     (in seconds) use ACCTIM.  The DSKTIM UUO will shortly be made illegal.

Conversion of programs to DATE75.

The following rules should be followed:

	ENTER
	The only date field that's relevant is the creation date in bits
	21-35 of the extension word (disk only).  If you wish to set the
	creation date use this field, otherwise zero it.

	LOOKUP
	works as before; if you want to print the file's date last written
	you must get that date from two words returned by LOOKUP.

	RENAME
	To get the default date and time, zero bits 9-35 in the third word, and
	bits 18-20 in the second word.  Otherwise, set these fields explicitly.
59. XGP default margin settings

LMAR	 200
RMAR	1650	may vary with number of raster points/scan-line
TMAR	 200
PMAR	1802	varies with the number of scan-lines/inch
BMAR	 200
XLINE	   4

The numbers above are all in decimal.  Parameter names correspond to
XSPOOL switches.  Some parameters are subject to change as the
physical charateristics of the XGP change.  Parameters are changed
manually, so if you observe the XGP making short pages, etc., tell
REG or anyone else who knows how to change these settings

Nominally, the XGP has 200 raster points/inch horizontally, and 200
scan-lines/inch vertically. 

The horizontal sweep is known to be non-linear, so if you're trying
to do exact graphics you'll probably lose. 

60. A clarification about dectapes (PDP-6 format).  REG 11/19/74
When an ENTER is done, if the fourth word is negative, it is assumed
to contain the IOWD for writing a DMP file.  Note that DMP files
are written differently than other files on a dectape.

Normal files are written 127 words/block with a 1 word header that points
to the next block of the file (always the next block on the tape, or zero).
DMP files are written 128 words/block and always in consecutive blocks
and the IOWD for retreiving the file is in the directory.

60.  In 8-bit IMP input, unused bytes in the last data word are flagged
by bits turned on in the four normally unused bits (32-35) with the
same significance as for IMP output (item 21, page 2).  The value of
such unused bytes will always be zero, as before, so only programs for
which zero bytes are significant need worry about this.

61.  Two new XGP escape sequences:
177 1 50	accepts the next byte as the intercharacter spacing.
	Note this command is currently a no-op and is included for
	compatibility with MIT.

177 1 51	is like stop underline (177 1 47) except the first
	byte following the 51 allows the user to specify how thick
	the underline will be.  (The second byte following the 51
	is taken in two's complement as the relative number of the
	scan line on which to do the underline - same meaning as 
	underscore - 177 1 41 - see uuo manual).

62.  Documentation error in description of bit 4 of function code
for data disk command word.  In text mode, Bit 4 ON means double
width, OFF means single width.  (The picture on page 199 is right)

63.  Once the UDP has been assigned in PUBLIC mode, any job may
INIT or OPEN it without having to ASSIGN it itself.

64.  Additional discussion of XGP error codes (REG 12/30/74)
XGPSER missed error (code 12 from error status MTAPE) returns
in ADR+2 the current scan line, and in ADR+3 the desired scan line
number for the text or vector that missed.   XGPSER is not able to
queue text or vectors for scan line 0 of the first page of a transfer.
If it's necessary to queue things on scan line 0, it's advised that
a page be output prior to that attempt.

65.  The TMPCOR and TMPCRD UUOs allow two new function codes, 6 and 7,
which are like 4 and 5 respectively (read directory, read and clear
directory) with the following differences:
     a.  All TMPCOR files for the specified job are listed, regardless
of alias (and deleted in function 7).
     b.  The directory list returned contains two words per file; the
first is the file's alias PPN, and the second is its name and size as
in the normal directory list.  The AC specified in the TMPCOR UUO gets
the number of TMPCOR files, as usual.

66.	Mode '1000 in LPTSER suppresses the TODF (top of double form)
that precedes the first output following CLOSE and the three TODFs that
occur at RELEAS.  The suggested use for this mode is by programs that
use special forms (e.g., labels).  Users of this feature should explicity
send a TODF ('177&'021) to the LPT before RELEAS to initialize the LPT
for the next user.

67.	The description of JOBSYM (on page 206) should be corrected:

change

  "the left half of this word contains the negative of the number of
symbols"

to

  "the left half of this word contains the negative of the length of
the symbol table"

68.	The SWAP UUO when used to write a DMP file changes JOBNAM to
the name of the file it writes.

69.  The NULMES UUO (CALLI 400114) is just like TTYMES with the following
exceptions:
--The count field must be nonzero.
--A zero byte does not end the text, but is simply ignored.  (It is
  included in the count.)
--If the error (direct) return is taken, the AC containing the argument is
  set to zero if the UUO failed because the TTY could not be found (no
  such device, not a TTY, couldn't get a DDB); otherwise it is set to the
  number of characters remaining to be sent.  Thus the user can recover
  from a temporary jam in the output buffer.

70.  Magtape MTAPE uuo.  If bit 40 is set in the effective address then the
"slice level" will be set from bit 20.  Setting the slice level may enable
some tapes to be read which otherwise had errors.  Also, setting the slice
level may be used as a maintenance feature.  RELEAS uuo (or MTAPE 40) will
clear the slice level to normal.
[THIS FEATURE (70.) HAS BEEN DISABLED.  USER CAN NO LONGER SET SLICE LEVEL.]

71.  If you do an UNPURE uuo after having done a SETPR2, then the following
will happen:
	1.  if you did an absolute SETPR2, then nothing is changed and the
	    direct return is taken.
	2.  if you did a relative SETPR2, then the write protection is cleared
	    for you second protect and relocate register and the skip return is
	    taken.
Correction to description of SETUWP uuo:  if the job has no upper segment
and hasn't done a SETPR2, then direct (non-skip) return is taken.  If the
job has done a SETPR2, then a SETPR2 is done with the original parameters
and with the write protect bit in the requested state.

72.  The 10000,,0 LINTAB bit, which formerly meant "model 37" (ha ha), now
indicates that characters less than 40 should be echoed (and output) as
uparrow followed by the character 100 greater than the real character,
except for 0 (null, not output), 7 (bell), and 11-15 (the format effectors).
This bit is initially on for TTY0-TTY11.  It is ignored for Data Disc and
III displays.  It can be set or cleared by SETLIN and PTSETL or by the
monitor commands TTY ARROW and TTY NO ARROW.
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, SECOND EDITION.]

73. The PTLOAD UUO now takes any text typed by the user before or during
the PTLOAD and writes it into the line editor after the PTLOAD is over,
in such a way that no timing error is possible.  A new UUO, PTL7W9
(PTYUUO 17,) allows the simulation of user typeahead; the format is

	PTL7W9 ADR

ADR:	<PTY number as for PTLOAD, usually 0>
	<address of, or byte pointer to, 7-bit ASCII string as for PTLOAD>
	<address of, or byte pointer to, 9-bit string of simulated typeahead>

The 9-bit string must be terminated with null (000).  The UUO loads the
7-bit string pointed to by ADR+1, positions the cursor to the beginning
of the line, then simulates typing of the 9-bit string pointed to by ADR+2,
then simulates typing of any characters which the user had typed while
all this was going on.

To make this work, a new TTY IOS bit is used: PTLIP (4000,,0) for
PTLOAD in progress.  The bit is on during a PTLOAD and diverts user
typeahead to a special buffer.

74. The 0,,10 bit in the fourth word of a SETACT argument (the bit name
is EMODE) causes a meta-null (400) character to be inserted in the TTY
input buffer after each line editor activation, following all characters
activated.  Thus when an activation character is typed in the middle of
a line, the program can find out where the line ends.  The 400 is an
activation character, in the sense that all of the text up to and including
it will be available to INCHWL.  (Normally when the line editor is
activated by a character other than return in the middle of the line,
the program can only read (with INCHWL) up to the activation character,
not up to the end of the line, until another activation character is
typed.)  Despite its use of a 400 code, this feature is not to be
confused with losing Poole mode.

75. The UPGIOT UUO effectively does a PGSEL for the POG in the UPGIOT.

76. The 0,,20 bit in the fourth word of a SETACT argument (the bit
name is BSACT) causes backspace with any combination of control and
meta bits (including none) to activate the line editor and be made
available to the user program if the line is empty.   Works on TTYs
too.

77. The 0,,40 bit in the fourth word of a SETACT argument (the bit
name is ALLACT) causes all characters with either or both of control
and meta on plus backspace to activate except in re-edited lines. 

78. Although the manual is correct, it should be noted in the device
dependent writeup for Dectapes that LOOKUP does not return the
file information as it is stored in the directory on the Dectape.

79. DSK 'GODMOD' MTAPEs 1 and 2 no longer take the sign bit of
ADR+3 to signify extra tracks at the end of system pack 0. There are
no extra tracks there.  [Page 149]

80. UDPs (OLD and NEW) are now =15485 tracks long, not =15200.  This means
that the password now lives in track number =15484.  [Page 176]

81. The writeup on LOOKUP/ENTER/RENAME in the UUO manual should
mention that the ppn field is ignored for lookups on a channel opened
for device SYS, and that [1,3] is always used instead. 

82. [OBSOLETE:  SEE #106]
  The GETHI UUO puts addresses 1000000 to 1377777 into a user's
upper segment address space (read only).  This UUO skips on success.
GETHI is temporary and is intended for UEDDT only!  Future versions
of the system will supercede this UUO with a more general mapping
function.

83. VDSMAP operation code 6, formerly unused, is now used for "set
line tied to".  Bits 0, 1, and 9 of the AC argument are ignored.
Bits 11:17 must specify a physical Data Disc terminal number (not a
shadow line).  The right half of the AC, instead of a pointer to a
channel map, should contain as an immediate operand the number of a
Data Disc line to which the specified physical screen should be tied.
If AC RH is zero, the screen is tied to the line to which its keyboard
is mapped.  This operation requires the UPG privilege and skips on success.
It returns the map word which the given physical screen sees after the
UUO, i.e. the map for the line specified in AC RH if successful.

84. Job Data Area Symbols.
Appendix 2 has several typos, several ommissions, and some errors.
Only the symbols in the following list should be referenced by users
since all other locations in JOBDAT are subject to reshuffling, on
the assumption that no DMP files reference this data.
JOBDAT.MAC[CSP,SYS] contains the definitions that users get to see.

JOBUUO,40		;USER UUO TRAP LOC.(UUO STORED HERE)
JOB41,41		;USER UUO JSR LOCATION
JOBERR,42		;IN WHICH RPG SYSTEM PASSES ERRORS TO THE LOADER
JOBENB,43		;Interrupt enablings
JOBREL,44,1		;RH=HIGHEST REL. ADR. IN USER AREA
JOBINT,71		;TO SEPARATE OLD AND NEW INTERRUPT SYSTEMS
JOBHCU,72		;HIGHEST USER IO CHANNEL IN USE
JOBPC,73		;JOB PC WHEN JOB INACTIVE
JOBSAV,73		;LAST LOCATION NOT SAVED BY SAVE COMMAND
JOBDDT,74		;RH=STARTING ADDRESS OF USER DDT
JOBJDA,75		;JOB DEVICE ASSIGNMENT TABLE
JOBHRL,115		;UPPER SEGMENT PROTECTION.  LH=BITS
JOBSYM,116		;POINTER TO LOADER AND DDT SYMBOL TABLE POINTER
JOBUSY,117		;POINTER TO UNDEFINED SYMBOL TABLE
JOBSA,120		;LH=INITIAL JOBFF, RH=STARTING ADDRESS
JOBFF,121		;FIRST FREE LOCATION IN USER AREA
JOBS41,122		;C(JOB41) SAVED HERE ON SAVE COMMAND
JOBREN,124,		;REENTER ADDRESS FOR REENTER COMMAND
JOBAPR,125		;PLACE TO TRAP TO IN USER AREA ON APR TRAP
JOBCNI,126		;APR CONI BITS ARE STORED HERE ON APR TRAP
JOBTPC,127		;PC IS STORED HERE ON USER APR TRAP
JOBOPC,130		;OLD PC IS STORED HERE ON START,DDT,REENTER
JOBCHN,131		;LH=FIRST LOC AFTER FIRST FORTRAN 4 LOADED PROGRAM
			;RH=FIRST LOC AFTER FIRST FORTRAN 4 BLOCK DATA
			;TO BE USED FOR JOB CHAINING
JOBCOR,133		;SIZE OF CORE FOR JOB ON RUN,SAVE,GET COM.
JOBVER,137		;JOB VERSION
JOBDA,140		;FIRST LOC NOT USED BY JOB DATA AREA


85. SWAP UUO will now save upper segments.  Set bit 35 in the extension word
of the save arguments.  Despite what it says in the manual, SWAP does not
affect the upper, unless it does a GET.  REG 9/28/75

86. Addendum (page 13).  IOBKTL can come on for the PTR under two circumstances:
a. In mode 1 (Ascii Line) if no activator (LF or FF) is seen before filling
the buffer.
b. In mode 14 (Checksummed Binary) if the data word count (right half of the
first word of a block) exceeds the buffer size.

87. Addendum (page 30).  REASSIGN UUO will assign (by console) a device
that is either assigned (by console) or inited (assigned by program).
Therefore, since reassign can assign to the same job as issues the uuo,
a job can assign to itself (by console) any device that it can init.
(Note that the IO channel is released, so you'd have to init it again, etc.)

88. APRENB UUO (page 124). 


89. Use of JOBERR (see item 84)
RPG uses JERR in the following way:  Initially it zeroes the right half before
starting the first translator.  If a translator detects a source program error
from which it can continue, it should set the right half of JOBERR non-zero.
The LOADER checks this halfword to decide whether to start execution or to type
the "EXECUTION DELETED" message.

90. Device VOD and its device service have been flushed.

91. Device service for AD has been flushed, but AD still exists for hand input,
    but must be servoed by user program on the PDP6.

92. Error codes for INTDMP, INTIPI, JOBRD have been changed slightly.  See UUOCON.

93. SETSTS UUO if changing i/o mode may call device to futz with your buffers.

94. In SWAP UUO, for phantom startup, if no extension is given, DMP is assumed.
(It was already documented, incorrectly, as doing that.)

95. SETLIN UUO allows TBXPND to be set for TTYs and network-PTYs.

96. Typo, page 179 (ADC/DAC) "dveice" should be "device"

97. Bug fix in FILINF (DSK MTAPE).  It reads 4 words.

98. Documentation change for DSK MTAPEs.  Functions 10,11,15 apply to a 4-word
    block of retrieval.  Various places which refer to 5-words are wrong
    (writeups for functions 10, 11, 14, 15).  The file offset word is not a
    part of the special retrieval area.

99. ADCSER changes. (see also 103)
	Clearing CYCDON is a no-op.
	IOAFT is not currently implemented.

100.User ACs after GET and RUN
    0:  Filename in SIXBIT of dump file
    1:  Extension in SIXBIT of dump file,,normal RH returned by LOOKUP
    2:  Normal stuff returned by LOOKUP
    3:  PPN of dump file
    4:  PPN of dump file

101.In a dump file with an upper segment, the upper is considered write
    protected if the sign bit of HILOC is set.  When the dump file is
    in core, this bit is clear and write protection is indicated by the
    sign bit of JOBHRL.

102. The description of what 272 points to is inadequate.  see FAIL page 7
     or talk to REG or JBR for more details.

103. Device ADC has been flushed.  Instead, device DAC can be used for
     both dump mode input and output, but not both (a RELEASE is necessary
     to change directions).
     The MTAPE to device DAC is changed:  Bit 0 of ADR+1, if on, denotes
     setting ADC parameters, if off, denotes setting DAC parameters.
     
     The motivation for making this change is to allow the DAC to run
     at (or closer to) full speed.  The full generality of both input
     and output may be reimplemented if the DAC/ADC is moved to the
     mappiplexor.

     As a consequence of not being able to do both I and O simultaneously,
     all references to IOSYNC, IOAFT have been flushed.

104. [OBSOLETE:  SEE #106]
     GETHI uuo, with non-zero ac field signifies attach 1,400000 ff as the
     upper (with read and write permission).   This UUO is intended for
     debugging the Suppes' memory only, and will not long endure.

105. CORE2 UUO has been changed slightly.
     1. if core2 fails in getting core for a new segment, the new segment is killed.
     2. if core2 fails because of access violation it no longer detaches the
        segment from you (code changed to conform to documentation).
     3. if core2 fails because of access violation, it returns in user's ac
        the number of K available to him (code changed to conform to documentation).
     4. if core2 fails because you wanted a new segment and there are no job slots
        available, the number of K available is NOT returned in the user's ac
	(documentation is incorrect).
     5. if user requests 0K for the upper, the upper is always detached, and
        if there are no other users of the upper, it is killed.  Access checking
        is not done (documentation is incorrect).

106. GETHI UUO.  This definition should still be considered temporary!

	CALL:	MOVE	AC,[# of pages,,first physical page*40+flags]
		GETHI	AC,
		<ERROR>
		<OK>
	Flags are:  20 - write enable
		    10 - parity error suppress

	error return occurs if:
		# of pages exceeds 400
		first physical+number of pages exceeds TMEMSIZ
		if write enable is specified and user doesn't have ACWPRV

	Suppress parity error bit works as follows.  When a parity error
	occurs on P1, in user mode, not PI in progress, and the current
	job has a GETHI upper with the parity error suppress bit set
	then the parity error is ignored entirely!

	This UUO adds the specified physical pages to your map starting at
	virtual page 400.

	This UUO is temporary and is supplied for UEDDT and certain memory
	diagnostics.

107. Meaning of FULTWX [page 44]
	FULTWX on means that the line is "self-echoing full duplex", i.e.,
	system echoing is not necessary.  TTY ECHO clears FULTWX, and 
	TTY NO ECHO sets it.

108. Pre-shuffle and Post-shuffle interrupts will no longer be given.
	[These haven't worked for some time.]

109. Lowcore pointer to JBTADR (loc 223) has been flushed.  JBTADR will
     be flushed soon.  Meanwhile, JBTPAG (lowcore pointer at 324)
     contains <page count,,first page assiged to user>
     JBTSWP now contains in the right half two nine bit fields for
     IMGOUT(bits 18:26) and IMGIN (bits 27:35) which are out and
     in image page counts (formerly K).
     Also affected:  CORMAX - # of pages of user space
	BIGHOLE  # of pages in biggest hole
	CORTAB is presently one 9-bit byte per page, but it will
		change soon to prevent an ILDB from working.

110. New privilege: ATTPRV, bit 18 (0,,400000).  Allows ATTACH command
     to attach phantoms and turn on JLOG.

111. Other new lowcor pointers:
	317	XMSET	pointer to 9 words of XGP default settings for:
			TMAR, PMAR, BMAR, LMAR, RMAR, XLINES, XTNODE, XVNODE
			and XGPBLN.  (XGPBLN is not settable by users.)
	320	RTRHCT	pointer to table of retry counts
	321	TBLKPT,,TPJMP
	322	DPHPOS,,PPCALL
	323	PPRJMP,,PPNO
	324	JBTPAG

112. New LTHUUO used to put upper into high core or take it out of high core.
     NOTE: THIS UUO IS TEMPORARY ONLY.  IF YOU PUT THIS UUO INTO SOME PROGRAM,
     PLEASE TELL REG SO THAT THE UUO CAN BE REMOVED WHEN IT IS FLUSHED IN THE
     SYSTEM.

		MOVEI AC,0	;Put segment in high core
		LTHUUO AC,
		<couldn't move you to high core>
		<segment is now in high core>

	or

		MOVEI AC,1	;Put segment in low core
		LTHUUO AC,
		<return here always, with segment in low core>

113. New line characteristics bit DMLIN, 40000,,0, means line is a Datamedia.
     TTYFIL bit ignored for Datamedias.

114. New TTYSET UUO to diddle various things about the user's attached TTY,
     and occasionally to find out things about other TTYs.

		MOVE AC,[-LENGTH,,TABLE]
		TTYSET AC,

	TABLE:	BLOCK LENGTH ;Block of operations to be performed.

     Each word in TABLE is a function word representing a specific
     operation, with the op code being in the high-order 9 bits (bits
     0:8, 777000,,0).  The remaining bits of the function word are
     used as arguments to the operation, with the meaning of specific
     bits being dependent on the particular op code.  The currently
     defined op codes are listed below.  More op codes will be added
     from time to time.  A function word containing an op code larger
     than the largest one currently defined will cause the job to get
     the system error message Illegal UUO.


	Bits 0:8	Meaning of op code, interpretation of argument(s)
	--------	-------------------------------------------------
	000		No-op.

	001		Turn on indicated line characteristics bits.
Ones in any of bits 18:35, representing line characteristics bits
0:17, indicate line characteristics bits you want turned on.  No
indication is given of attempts to turn on illegal bits; they simply
are not turned on.

	002		Turn off indicated line characteristics bits.
Ones in any of bits 18:35, representing line characteristics bits
0:17, indicate line characteristics bits you want turned off.  No
indication is given of attempts to turn off illegal bits; they simply
are not turned off.

	003		Get line characteristics and line number.
The address field (bits 18:35, 0,,777777 bits) of this function
should point to a word to receive the returned line characteristics
in the left half and your tty line number in the right half.  The
returned word will contain -1 if the job is detached.

	004		Execute ESC or BREAK command.
This function performs the operation normally carried out when an ESC
or BREAK command is typed on a display's keyboard.  However, the TTY
attached to the job executing this function does NOT have to be a
display.  If the TTY is not a display and the ESC/BREAK command given
applies only to displays, then this function will be a no-op.  The
only ESC/BREAK commands currently meaningful on non-displays are:
ESC/BREAK F,I,X,Z.  This function is recommended over the PTY writing
UUOs because it does not interfere with actual typein from the
keyboard (including ESC and BREAK commands typed from the keyboard).
The low-order 7 bits of the function word (bits 29:35, 0,,177 bits)
are taken as an ASCII character to be "typed" preceded by ESC or
BREAK.  Bits 18:26, 0,,777000 bits, of the function word are
interpreted as the numeric argument to the command.  The command will
be ESC if bit 27 (0,,400) is off (zero) and BREAK if this bit is on
(one).  For example, <004000,,"W"> will do ESC W, and <004000,,520>
will do BREAK P (120 is "P").  Escape commands that affect the physical
TTY rather than the one to which you are mapped cannot be executed with
this UUO; these include all the video switch and audio switch escape
commands and the mapping commands (ESC/BRK +*ADSTUBM and BRK L).

	005		Set TTY WIDTH.
This function sets the maximum TTY line width for output of text to
the TTY, as the TTY WIDTH command does.  DD and III ignore this width
as do non-ARPA PTYs.

	006		Get TTY WIDTH.
The maximum line width for the TTY is returned in the word pointed to
by the right half of the function word.  E.g., 006000,,2 will return
the TTY width in AC 2, 006000,,140 will return it in user location 140.

	007		Get TTY horizontal position.
The horizontal position of output and echoing is returned in the word
pointed to by the right half of the function word.

	010		Inhibit CONTROL-CR once only now.
The CONTROL-CR feature of reloading the last line activated from the
line editor (displays only) is inhibited for right now only.  This is
a useful function to execute immediately after a program has read a
password or other secret information that should not be displayed.
Thus the last line activated at the time this function is given cannot
be retrieved with CONTROL-CR.  If there is already text in the line editor
at the time this function is given, then this function is a no-op.

	011		Turn on selected bits in TTY's IOS word.
Bits on in the right half of the function word are turned on in your attached
TTY's I/O status bits.  You cannot set the IOACT bit (0,,10000 bit).

	012		Turn off selected bits in TTY's IOS word.
Bits on in the right half of the function word are turned off in your attached
TTY's I/O status bits.

	013		Return TTY's IOS status word.
The I/O status word for your attached TTY is returned in the word pointed to
by the right half of the function word.

	014             Turn on or off special DM bits.
This function has no effect if your job is not running on a Datamedia display
(DM).  If bit 35 (0,,1 bit) is on in the function word, your DM is flagged
as capable of displaying the control characters (1:37 octal) when they are
sent following an ASCII escape (octal 33).  If bit 34 (0,,2 bit) is on in
the function word, your DM is flagged as NOT capable of displaying the
control characters.  If bit 33 (0,,4 bit) is on in the function word, your
DM is flagged as NOT wanting the line editor displayed in blinking/bold
(e.g., your DM doesn't have blinking and bold interchanged).  If bit
32 (0,,10 bit) is on in the function word, your DM is flagged as wanting
the line editor displayed in blinking/bold.  The remaining bits in the
function word are reserved for future uses.

	015             Get display's screen height.
If the 400,,0 bit is on in the function word, then this function returns
the number of screen lines for the display whose line number is given in
the 177,,0 bits of the function word.  If the 400,,0 bit is off, the
number of screen lines for your own display is returned.  The number of
screen lines is returned in the word whose address is in the right half of
the function word.  The value returned will be zero if the specified
terminal is not a display.

	016		Set DM display's screen height.
This function has no effect if your job is not running on a Datamedia
display (DM).  The number of lines the system considers your DM to have is
set from the right half of the function word.  Currently, this number must
be at least 8.  If the right half of the function word contains a (signed)
value less than 8, then the default number of screen lines, namely 24, is
used for your DM.  Note that after you give this function, a screen reset
(e.g., ESC N or UUO RESET) is necessary to actually cause the number of
lines used by your page printer to take into account your new screen
height.


	CPOPJ	;0	;NO-OP
	LINSET	;1	;TURN ON GIVEN LINE CHARACTERISTICS BITS
	LINCLE	;2	;TURN OFF GIVEN LINE CHARACTERISTICS BITS
	GETLN2	;3	;GET LINE CHARACTERISTICS
	TTESC	;4	;DO ESC COMMAND
	TTWID	;5	;SET TTY WIDTH FIELD
	GETWID	;6	;GET TTY WIDTH OR DPY WIDTH
	GETHP	;7	;GET TTY HORIZONTAL POSITION
	NOCCR	;10	;PREVENT USER FROM DOING CONTROL-CR NOW ONLY
	STIOS	;11	;TURN ON GIVEN IOS BITS
	CLIOS	;12	;TURN OFF GIVEN IOS BITS
	GTIOS	;13	;GET TTY'S IOS BITS
	DMDIDL	;14	;DIDDLE SPECIAL DM BITS
	GDPHGT	;15	;GET DPY HEIGHT (LINES/SCREEN)
	SDPHGT	;16	;SET DPY HEIGHT (DMs ONLY)
115.  PPINFO UUO--Minor changes to bits returned in word 2 of info block.
      Ones in the following bits now indicate information as follows:
	Bit 0--TTY is a III
	Bit 1--same as always (screen erased by ESC command)
	Bit 2--DD page color is green on black
	Bit 3--TTY is a DM (Datamedia terminal)
	Bit 4--TTY is a DD (Data Disc terminal)
	Bits 18:35--same as always (line editor Y-position in LEYPOS format)

116.  XGP underscore command (a clarification).
	1. Left end is at the current column position.
	2. Final column position is 1 column to the right of the last
	   underscore column.  (I.e., final column←initial column+length
	   of underscore.)

117.  The system (7.05) now agrees with the manual.  XGPSER implements
	177 1 52 n - set relative base line adjustment.

118.  XGP changes.
	1. MTAPE function 0, error code 15 means "Font Compiler core
	image moved (or disappeared) while the XGP was running".
	2. MTAPE function 4 now returns in ADR+3 the value of XGPRDY.
	This cell is -1 if the XGP has OK status, 0 if XGP requires
	manual intervention (7.05/D).

119.  Clarification of the disk Record Offset feature, page 147.
	The manual is correct in what it says about MTAPEs 20 and 21
	taking or returning the number of the first logical record
	(which is the number of hidden records plus one).  Note
	however that the offset is stored in the retrieval (and thus
	returned by MTAPEs that read the retrieval) as the number of
	hidden records.  Also note that MTAPEs 10 and 11 only deal
	with 4 special words of file info instead of five.

120.  SETCRD UUO affects your lower iff the 400000,,0 bit is on.
	(Changed from "any of 444000,,0 bits is on".)

121.  The TTYMES and NULMES UUOs have been modified to type out the given
        message on both the current PP (piece of paper) and PP number 0 if
        all of the following conditions are true: 1) the destination
        terminal is not your own specified by device 'TTY'; 2) the
        destination terminal is a display whose current PP is not PP 0;
        3) the destination terminal is not "holding" terminal output.  If
        conditions 1 and 2 are true but terminal output is being "held",
        the message is output only on PP 0.  If either of conditions 1 or 2
        is not true, the message is output only on the terminal's current
        PP.  Thus the message is always output to PP 0 unless the
        destination terminal is your own and is specified by device 'TTY'.

        This means that if you receive a message while you are using E or
        some other program that uses some PP other than PP 0, you can see
        the message (as typed out on PP 0) by typing BREAK N (which selects
        and redisplays PP 0).

122.  New ELF MTAPE.  Opcode 5 fakes power trap on 11.  See UUO MANUAL, p. 201.

	Op code = 5:	PWRTRP

	Simulates a power fail trap on the PDP-11.  I.e., the 11 traps thru 24.
	Note it does this 2 times, once on power down and once on power up.

123.  The 11 interface (ELF) can interrupt the 10 thru the user interrupt system.
	Bit 20 (0,,100000) (called INTELF) is the relevent bit to enable.
	The device ELF must be yours for you to get this interrupt. The 11 requests
	this interrupt by writing a 1 into the least significant bit of word
	772566 on the unibus.

124.  Users are warned that in DSK buffered mode the sequence:
	ENTER
	OUT
	...
	OUT
	RENAME
	CLOSE
	will clobber parts of the file. 
	Do the RENAME after the CLOSE.  Also in dump mode any outputs after
	a RENAME will clobber parts of the file.

125.  [This entry will be not be effective until system 8.00]
      In a DSK RENAME, if any of 0,,700000 in ADR+1 or 777,,777777 in
	ADR+2 is non-zero then the user-supplied data will replace
	the corresponding fields in the file retrieval (didn't always
	work before).  If the user-supplied fields are all zero, then
	the old retrieval information is kept (it is not the case that
	the current time is supplied instead) (manual didn't specify
	what happened).

126.  [This entry will not be effective until system 8.00]
	The bug described in 124 has been fixed.

127.  The problem mentioned on page 145 paragraph 4 about writing an odd
      number of words in dump mode has been fixed.  It now works the
      way you would expect. (Also on page 177, second paragraph.)

128.  It should be noted on p. 215 of the UUO Manual that the address in
      a JUMP instruction for the DD interface is always taken as absolute
      (never relocated in a user program) and thus the JUMP instruction
      should not be used in user DD programs.  The JUMP instruction is
      included for completeness and for system programmers.

129.  DSK Dump mode output using the ACs as data is illegal.  (Use of
      ACs as dump mode command list is still OK.)
130.  UPGIOT UUO for Datamedia (DM) displays.

[ME - The following specifications for DM display output are subject to
change as necessary during the next few weeks.]

The UPGIOT UUO can be used on Datamedia (DM) display terminals to run a DM
display program.  For DM display programs, this UUO accepts several flags
in the left half of the first word of the header block, as explained
below.  The DM display program itself consists of a sequence of 7-bit
bytes (an ASCII string), which bytes are by default interpreted as 7-bit
characters to display, except for the special 7-bit byte value of 177,
which causes the next character, if in the range of 000 to 040, to have
its normal control effect on the DM, instead of being interpreted as a
printable character.  Normally, a character with octal value less than 40
(except for NULL (0), which is ignored, and TAB (11), LF (12), and CR
(15), which are not printing chars) is interpreted as a Stanford character
to display in its special DM representation, namely as the char which is
100 or 140 greater but blinking or bold.

A 177 char in the program causes the next character to have its normal DM
function if that char is greater than or equal to 175, or is less than or
equal to 040.  The sequences 177 n, where 40<n<175 are reserved for future
escape meanings, and are currently no-ops.  If the char after a 177 is a
FF (i.e., a 14, the cursor positioning DM command), then the next two
chars after the FF will be taken as the X-Y position for the cursor in
standard DM representation (see ** below).  To actually output a 177 to
the DM, you must precede it with a quoting 177.  The DM commands possible
using quoted control characters are explained later.

RESET and EXIT UUOs will flush any pending display program on a DM.


Here is the form of the UPGIOT UUO for DM display output.

	UPGIOT HDR


HDR:	<flags>,,PROG
	<length of display program, in words>
	<In-Progress flag>

PROG:	<7-bit bytes>

Flag bits in the LH of the first word of the header are interpreted
as follows:

BIT	OCTAL		NAME	MEANING

 0	400000,,0		Overlapped mode.  The UUO will return immediately
                                without waiting for the display program to
                                finish.  However, it will wait for any previous
                                DM display programs to finish before returning
                                (unless the CHASTE bit is on--see below).  While
                                the program is running, the <In-Progress flag>
                                will be non-zero.  When the program finishes,
                                this flag will be cleared, unless the job does a
                                RESET or EXIT before the display program has
                                finished and cleared the flag.

 1	200000,,0		Ignored (double-field mode for DD programs).

 2	100000,,0	DMQUOT	Quote all characters in the program, except 0's
				and 177's.  That is, control chars will never
				be converted to blinking/bold
				characters to represent chars 1:37 in the
				Stanford char set.  No conversion of Stanford to
				Ascii will be done for the three characters that
				are different in the two character sets.  No
				automatic erasing of new lines will be done.
				Tabs will never be converted to spaces on output,
				nor spaces to tabs.

 3	40000,,0	TRUNCA	Truncate each output line to 80 characters.
                                When the 80th column of a line is passed on the
                                DM display, following bytes will be ignored
                                until a CR, LF, or quoted (by 177 or DMQUOT)
				F appears.

 4	20000,,0	NOEEOL	Suppress the erasing of each line that normally
                                occurs just before anything (including a CR or
                                LF) is output on the line.

 5	10000,,0	NOEEOB	Suppress the erasing of any line on which nothing
                                is output but CR or LF.

 6	4000,,0		BETWEE	Ignore spaces between tabs.  When a tab is
                                encountered in the program, all following
                                spaces and nulls are ignored until another tab
                                or a character other than a tab, null, or space
                                is seen.  If the terminating character is a
                                tab, then it also is ignored.

 7	2000,,0		USERGO	Don't let any other DM output occur while this
                                program is running.  Normally, higher-priority
                                DM outputs (e.g., line editor and page printer
                                output) can interrupt a user program.  Also, if
                                the output from the program falls off the
                                bottom of the screen, it will wrap around to
                                the top if and only if this bit is set;
                                otherwise text occurring after falling off the
                                bottom will be ignored until a command to
                                position the cursor back on the screen is seen.

 8	1000,,0		CHASTE	Don't wait for any previous DM display program
                                to finish.  Instead, suppress the remainder of
                                such a previous display program.


Here are the effects of control characters transmitted to a DM display terminal.
To get these chars output from a display program, you must quote them either
with the DMQUOT flag explained above or with a preceding 177 character.  The
characters TAB (11), LF (12), and CR (15) do not need to be quoted in a display
program in order to be transmitted to the display.  (TAB does need to be quoted
if the system thinks the terminal either does not have tab stops or does not
have its tab stops set correctly; an unquoted tab in such a case will be
converted to the equivalent number of spaces.)

If the DM is in insert/delete (ID) mode, four of these control characters have
special effects; these are explained later.  The remaining control characters
have generally undefined and in some cases weird effects in ID mode.

OCTAL	CHAR	↑CHAR	Effect

000	NULL	↑@	no-op.
001	↓	↑A	no-op.
002	α	↑B	home.  Moves cursor to upper-left corner.
003	β	↑C	no-op.
004	∧	↑D	no-op.
005	¬	↑E	no-op.
006	ε	↑F	no-op.
007	π	↑G	bell.  Beeps the DM's audio tone.
010	λ	↑H	back cursor.  Moves left one char unless at left margin.
011	TAB	↑I	tab.  Moves to next tab stop.  Normally need not be quoted.
012	LF	↑J	linefeed.  Moves down a line, or to top line from bottom.
013	VT	↑K	tab clear.  Clears any tab stop at current column.
014	FF	↑L	set cursor position from next two chars.  See ** below.
015	CR	↑M	carriage return.  Moves to left margin and down a line.
016	∞	↑N	blink on.  Subsequent chars will be blinking.  See * below.
017	∂	↑O	protected field on.  Subsequent chars will be bold.  See *.
020	⊂	↑P	insert/delete on.  Enters insert/delete mode.  See ***.
021	⊃	↑Q	transmit page to computer.  This char never sent to DM.
022	∩	↑R	transmit page to printer.  This char never sent to DM.
023	∪	↑S	transmit line to computer.  This char never sent to DM.
024	∀	↑T	no-op.
025	∃	↑U	no-op.
026	⊗	↑V	no-op.
027	↔	↑W	erase from cursor to end of line.
030	_	↑X	cancel.  Turns off blink, protected field, ID, & roll modes.
031	→	↑Y	set tab.  Sets a tab stop at current column.
032	~	↑Z	up cursor.  Move up a line unless on top line.
033	≠	↑[	no-op.
034	≤	↑\	forward cursor.  Moves right a char, to next line from end.
035	≥	↑]	roll on.  Turns on roll mode.  See **** below.
036	≡	↑↑	master clear.  Clears screen, tabs, and all modes but roll.
037	∨	↑←	erase screen.  Clears unprotected text, all modes but roll.


*  Stanford DM terminals will have a hardward modification installed to
interchange the effect of the blink-on and protected-field-on chars and to
disable the protectedness of chars sent with protected-field mode on.  Thus,
with this mod, blink-on will cause subsequent chars to appear as bold, and
protected-field-on will cause subsequent chars to appear as blinking and not be
protected.  Furthermore, blinking protected-field chars that are moved by ID
operations will stop blinking.


**  The FF character is used to move the cursor to an arbitrary X-Y position on
the screen.  The position is determined by the next two chars sent after the FF.
The first of these two chars sets the X-position and the second the Y-position.
The actual X- or Y-position set by a character is determined from the octal
value of the character XORed with 140 (octal) and counting lines from 0 to 23
(decimal) and columns from 0 to 79 (decimal).  X- and Y-position characters that
are out of range of the screen will select a position of 0.  If the X- or
Y-position character is one of the chars home (↑B), FF (↑L), transmit page (↑Q
or ↑R), cancel (↑X), master clear (↑↑), or erase screen (↑←), then the cursor
positioning command is aborted and the aborting command is executed instead.


***  In Insert/Delete (ID) mode, the following four control characters have
these special effects rather than those listed above.  Other control chars have
undefined effects in ID mode.

OCTAL	CHAR	↑CHAR	EFFECT IN ID MODE (none of these moves the cursor)

010	λ	↑H	delete char.  Chars to the right shift left one space.
012	LF	↑J	add row.  A blank line is inserted, lines below move down.
032	~	↑Z	delete row.  Lines below move up one line.
034	≤	↑\	add char.  Space is inserted, chars to the right move right.


****  In roll mode, a CR or LF sent while on the last line of the display will
cause the insertion of a blank line at the bottom of the screen to force the
whole screen text to scroll up one line.  The cursor is left at the bottom
instead of moving to the top line as it would if roll mode were off.  Note
that roll mode can only be cleared by the cancel character, ↑X.


For more details, consult the Datamedia manuals or ME.

131.  SUPERS bit (0,,100) in fourth word of SETACT table suppresses
      erasure of the DD or DM line editor upon activation while
      positioned to specific screen location with LEYPOS UUO.

132.  KILTTY bit (40000,,0) in TTYTAB means TTYSER has called TTYKIL
      for this line and is through with the DDB, which will be released
      by DPYKIL when (and if) the dpy header is released.

133.  RUN UUO takes core size argument in words, not in K as documented.

134.  New CURSOR UUO [PPIOT 10,] specifies place to leave DM cursor when
      output isn't going on provided but only when the line editor is empty.

	CURSOR [X,,Y]

      If [X,,Y] is negative, then the cursor is always positioned wherever
      the line editor cursor should be.  If X and/or Y specifies a position
      that is off screen, no cursor will be displayed.  Values of X and Y
      should be 0 for the left margin and top line respectively, and N-1
      for the Nth column and Nth line respectively.

      The effect of the CURSOR UUO is undone by RESET, DPYCLR, and ESC or BRK N.

135.  Absolute location 331 now contains LDSHF*1000+LDPWR,,LDAVG.

136.  Page 181 change MTAPE ADR to MTAPE <channel number>,ADR

137.  The XGP and DAC devices are now interlocked.  Only one of them
      may be INITed at a time.  If you try to INIT the XGP, for example,
      while the DAC is in use, it will give an error message or the error
      return if the 400 bit is on in the mode, or wait automatically if the
      1000 bit is on.

138.  (add to item 122) ELF MTAPE for powerfail clears GRAB mode.

139.  Delete all references to the Librascope and to fast band service.
      Low core pointers for FBBANDLIST and FBACT are now zero and reserved
      for future use.

140.  The descriptions of INTPTI and INTPTO in Section 9 are interchanged.
      Bit 5 (10000,,0) is INTPTI but should say "A PTY you own has just
      gone into a wait state waiting for some input from you (e.g., by
      PTWR1W); it may be waiting for either a character or a line."  Bit 8
      (1000,,0) is INTPTO but should say "A PTY you own has just output a
      character for you to read (e.g., with PTRD1W)."

141.  The new RDLINE UUO reads a line from a TTY, returning a 9-bit string
      ended with a null.  The calling sequence is:
	  MOVE AC,[BBCCCC,,ADDR]  ;ADDR IS ADDRESS FOR RETURNED 9-BIT STRING
	  RDLINE AC,
      where BB (two octal digits) is the initial byte position (to be
      IDPBed) for returning characters, and CCCC (four octal digits) is
      the maximum number of characters (including the ending null) to be
      returned by this UUO.  If CCCC=0, then the default maximum is used,
      namely 160 (decimal) characters (including the ending null) (50
      octal words).  The byte pointer to the ending null byte is returned
      in the AC.  This UUO reads characters until either the maximum count
      is used up or a whole "line" has been read.  A "line" is defined as
      follows: If the terminal is a display with the EMODE bit turned on
      (see item 74 in this file), then a line is any number of characters
      terminated by a 400 (the marking character in EMODE); otherwise, a
      line is any number of characters terminated by an activation
      character (which is defined in the usual manner, e.g., as in INCHWL).

      Note that if the AC of this UUO contains just 0,,ADDR upon call,
      then the characters will be returned starting in the high-order byte
      of address ADDR+1, since the byte position (00 in this case) is
      incremented with the first deposit.

142.  Section 9.1, Page 118, first paragraph, third line from end should
      say "If your job is not in one of the queues..." instead of "...or
      the queues...".

143.  All references to PDP-6 should be changed to P2 and KA10 to P1, etc.

144.  The LOCK UUO no longer returns anything in the accumulator.

145.  Accumulator 2 no longer contains the job's protection-relocation
      when a SPACEWAR module is started up.

146.  The maximum size of a transfer from the TV camera (INPUT UUO for
      device TV) is 18 pages (thats 9*1024 words).

147.  More TTYSET UUO functions implemented.  See page 13, entry 114.

148.  Programs that run the disk in buffered mode should consider using
      a larger number of buffers.  The system default is two (too low)
      whereas, the maximum useful number is 19.  19 permits an entire disk
      track to be read and copied into the user's buffers, whereas with two
      buffers, the system must read the track 9 times.  The number 19 is
      derived from the format of files on the disk and will change if the
      disk format changes.

149.  The FREEZE UUO allows user programs to determine exactly what
      characters are transmitted to a Datamedia (DM).  This UUO uses the AC
      field as an immediate argument.  If the AC field is 1 (FREEZE 1,),
      then non-UPGIOT output is frozen and will not take place.  If the AC
      field is 0 (FREEZE 0,), then non-UPGIOT output is unfrozen and can
      continue.  However, any time the state of frozenness is changed, all
      queued output is flushed instantly.  While the DM is in the frozen
      state, transfers queued by UPGIOT will still be allowed to go
      through, but if the DMQUOT bit is on for such a UPGIOT transfer, the
      display program text will be sent EXACTLY as given to the system,
      with no padding characters ever inserted and no interpretation of
      such things as control characters, long line wraparound, etc.  If the
      DMQUOT bit is off for a frozen UPGIOT transfer, normal text
      interpretation occurs.  RESET, DPYCLR, and ESC C all restore the DM
      to the unfrozen state.

150.  The UUOs INCHRW, INCHRS, INSKIP, SNEAKW, and SNEAKS can now access
      the first character of the line editor, even if the line editor
      cursor is at the left margin.

151.  Two new bits have been added in the right half of the fourth word of
      the special activation table (set by SETACT UUO).  These bits, which
      effect activation of the line editor, are:

	SUPACT (0,,200)
      This bit suppresses CONTROL and META bits on all characters except
      line editor commands.  In this mode, anything typed with CONTROL or
      META is inserted into the line, never overtyping something already
      there, but the bucky bits are then discarded.  When you are typing to
      the monitor, you are effectively always in this mode.

	SUPEOL (0,,400)
      This bit suppresses activation by the following commands at the end
      of the line editor: CONTROL-TAB, CONTROL-R, CONTROL-S, CONTROL-K, and
      META-<plain non-activating char>.  Among these, the CONTROL commands
      are carried out as line editor commands, including the taking of a
      following character argument by CONTROL-S and CONTROL-K; however,
      these commands are all no-ops at the end of the line (except for
      storing the repeat search/kill argument).  META-<plain non-activating
      char> at the end of the line is treated as though the META had not
      been typed.  However, ALLACT mode (0,,40 in the same group of mode
      bits of SETACT table) takes precedence over this mode--anything
      required to activate by ALLACT, including META at the end of a
      not-reedited line, will activate dispite this bit being set.  Note
      that CONTROL-D and CONTROL-I still activate at the end of the line in
      SUPEOL mode.

152.  New UUO .SYML for looking up system symbols.  CALLI 400010 (used to be
      UFBGET)
      CALL:	MOVEI AC,ADR
		.SYML AC,
		ERROR RETURN
		SUCCESS RETURN

      ADR:	RADIX50 0,SYMBOL
      ADR+1:	RADIX50 0,BLOCKNAME OR 0

      The UUO will search the system's symbol table for tge given symbol.
      If it is found in the specified block, the symbol's value is returned,
      regardless of the existence of the symbol in any other blocks.  If the
      blockname is 0, then there must be exactly one occurence of the symbol
      in the table.

      On a successful return the symbol value will be in AC.
      On a failure return, AC will contain a failure reason:
	0	system symbols not in core of not sorted
	1	symbol not found in any block
	2	symbol not found in specified block, but is in some other block
	3	symbol multiply defined (blockname was 0)

153.  The left kern parameter in fonts is now interpreted as a 9 bit twos
      complement quantity by XGPSER, allowing for right kerning. (hpm)

154.  The SHOWIT UUO causes your job's wholine to include a display of
      the status of a disk (DSK or UDP) file on the right half of the 3rd
      line of the screen.  SHOWIT is CALLI 400011 (formerly UFBGIV UUO).
      The left half of the 3rd line is never touched by the wholine.  The
      form of the filestatus display is the same as that typed out by the
      FILES commands except that the job number is omitted since it always
      matches that in the user line of the wholine.  The form is
		FILENM EXT PRJPRG length usetp FLAGS
      where "length" is the file's length in records, "usetp" is the
      current value of the USET pointer for the file, and, in the FLAGS, U
      means the file is on a UDP, R means the file is being Read, RA means
      the file is open in Read-Alter mode, W means the file is being
      Written, and E means the End of file has been reached.

      Call:	MOVEI AC,BITS+CHANNEL NUMBER
		SHOWIT AC,

      where BITS includes any of the following:
	0,,400000	;Suppress the erasure of the filestatus display
			;that normally happens when the I/O channel being
			;displayed is released.  Useful if your program
			;normally displays something else on that line.
			;This bit is irrelevant if the display is a III.
	0,,200000 	;Don't display any filestatus on the wholine.
			;This turns off any previous filestatus display
			;(whether turned on by UUO or keyboard command).

155.  Bit 17 of word 2 of the block returned by PPSPY/PPINFO will be on
      if the display is a DM with a FREEZE in effect.

156.  The ESCAPE I interrupt returns as a datum the argument given to the
      escape command, in sign magnitude format (sign on for BREAK, off
      for ESCAPE).

157.  The LEYPOS and DPYPOS UUOs, which take arguments specifying the
      screen position of the line editor and page printer, respectively,
      normally take arguments from -1000 (bottom of screen) to 1000 (top
      of screen), with other values being off screen.  On DMs, however,
      -1000 is at the 24th line but negative values with magnitude
      greater than 1000, for instance -1200, may not represent off-screen
      positions if the DM is a simulated DM with more than 24 lines.  On
      the other hand, positive values with magnitude greater than 1000,
      for instance 1200, will always be off-screen.  Also, note that only
      the low-order 9 bits of the position argument are examined, with
      this 9-bit value being taken as a 2's-complement number.  Thus the
      2000 bit is the sign bit, and the possible range of values for the
      position is from -2000 to 1777 (octal).

158.  The SUPCT bit (0,,40000) in the fourth word of a special activation
      table used with the SETACT UUO disables the (new) line editor
      commands αT, αL, and αB.  With the SUPCT bit set, any of αT, αL,
      and αB typed will be processed as normal typein to the user
      program.

159.  The problem mentioned in item 128 about absolute Data Disk jump addresses
      has been fixed.  The Data Disk now transfers using user-relative
      addresses thanks to the Mappiplexor.

160.  The maximum transfer size for the ADC or DAC is 32K.
161.  Two new MTAPEs have been added for device DISK and UDP in either new or
      old mode.
      MTAPE TO READ THE DISK IN DUMP MODE INTO P3 MEMORY
      CALL:    MTAPE CHN,[ 'GODMOD'
                           24
                           IOWD FOR TRANSFER RELATIVE TO BEGINNING OF P3 MEMORY
                           ADDRESS OF USER MODE PLACE TO STORE ECC INFO
                            (THIS AREA MUST BE WRITABLE AND AT LEAST 38. WORDS LONG)
                           ECC STATUS WORD 1 IS STORED HERE
                           ECC STATUS WORD 2 IS STORED HERE
                           DISK ADDRESS FOR OLD MODE TRANSFER
                             ]

      THE ECC INFO IS TWO WORDS PER ENTRY IN THE FOLLOWING FORMAT:
        BYTE (12) BYTEC (24) BITS  ↔  P3 AOBJN POINTER TO RECORD
      WHERE BYTEC IS THE BYTE COUNT FROM THE BEGINNING OF THE RECORD AND BITS
      ARE THE 3 BITS FIELD TO BE XORED WITH THE DATA.

      ECC STATUS WORD 1 HAS THE FOLLOWING FORMAT:
        -N,,USER ADDRESS OF NEXT LOCATION TO STORE ECC INFO AT (N MAY BE ZERO)
      IF THE LEFT HALF IS 1 THEN SOME ECC INFO IS LOST.  IF SO, THE ECC STATUS
      WORD 2 IS THE FIRST P3 ADDRESS OF THE FIRST RECORD WHOSE ECC INFO WAS LOST.

      MTAPE TO WRITE THE DISK IN DUMP MODE FROM P3 MEMORY
      CALL:    MTAPE CHN,[ 'GODMOD'
                           25
                           IOWD FOR TRANSFER RELATIVE TO BEGINNING OF P3 MEMORY
                           DISK ADDRESS FOR OLD MODE TRANSFER
                             ]

162.  PTRDS UUO returns immediately with only a null in the returned string
      if the PTY is not a display and is holding output.

163.  Lowcore location 252 is now a pointer to the cell DQCNT which contains
      the number of disk operations waiting to be started.

164.  The PHUBIT bit (PHysical Uset BIT--0,,100) in the I/O status word for
      device DSK or new-style UDP now causes the disk file's record offset
      to be ignored by all UUOs except those that explicitly set or return
      the record offset.  With PHUBIT on, the UUOs USETI, USETO, UGETF, and
      MTAPE (functions 0 and 16) take and/or return physical record numbers
      instead of logical record numbers, and the UUOs LOOKUP and ENTER
      return the physical size of the file rather than the logical size.  In
      other words, with PHUBIT ON record numbers are taken as PHYSICAL
      (record offset ignored), and with PHUBIT OFF record numbers are taken
      as LOGICAL (thus allowing some records at the beginning of the file to
      have negative record numbers).  MTAPE functions 20 and 21 (read and
      set record offset) are not affected by this bit.

165.  New ATTSEG error code (p86):
	5 - Lower segment is too big (bigger than 128K)

166.  Note that RENAME UUO does not do a CLOSE.  The renamed file will
      still be open after the RENAME.

167.  New privilege bit LIVBIT (200000), can be enabled or disabled 
      by anyone (by the monitor commands ENABLE LIV and DISABLE LIV)
      and prevents autologout.

168.  Lowcore pointer update:
	216	CORMAX	maximum size of a user job in words
	223	CHKBEG	first checksummed location in the system
	255	CORPTR	This is address of a block of words describing
			the state of the swapper.  The first 4 words are
			0, FINISH, FORCE, and FIT.
	257	unused
	261	unused
	263	unused
	265	SYSTOP	This is the address of a word that contains the physical
			address of the first word after the system (where free
			storage begins).
	266	CORTAB	This is the address of a table that indicates the usage
			of each page of core.  The entries in this table are
			9-bit bytes (0,,777000 bits).  The entry for a given
			page contains either 1)the number of the job occupying
			the page, 2)a 101 if the page is part of the system,
			3)a 103 if the page is non-existant, 4)a 105 if the
			page is part of free storage, 5)a 110 if the page is a
			page map, or 6)a 0 if the page is unused.
	301	unused
	325	MTRLST	This is the address of the first word of a linked list
			of meter control blocks used by the system when the
			performance meter is in "background" mode.
	326	SKIPP1	An I/O instruction to execute which will skip if it is
			executed on processor 1 (P1).
	327	SKIPP2	An I/O instruction to execute which will skip if it is
			executed on processor 2 (P2).
	330	LEBUF	Offset within the DPY header for the line editor buffer
	332	DDQSIZ	This is the address of a word containing the size of the
			queue of terminals waiting for data disk channels.

169.  JBTSTS modifications.
	WIPEJD (0,,200000) flushed
	SHF (4000,,0) flushed
	LOKSWP (4000,,0) swap job into locked core.
	FBINP (0,,10000) flushed
	FBEPR (0,,4000) flushed
	FBJWT (0,,2000) flushed

170.	All references to PDP-10 and PDP-6 should be fixed to use P1, P2 and P3.

171.	ADC/DAC service has been flushed.

172.	The following devices have been added.  They are all on the PDP-6 (P3)
	ADC,DAC,KIM,SAM,RTJ,FRM,SIX
	All but SIX are dummy devices used for interlocking.  SIX is a sharable
	device [KS: insert description of UUOs here.]

	SYSTEM CALLS FOR THE SIX (copied from SYS.PUB[SIX,MUS] on 17-Sep-77)

There are basically two different things you can do to the SIX through
the KL: send messages and do disk transfers. Each of these things has its
own formats and UUOs. Here is how it all works:

DEVICE SIX

There is a device that you can OPEN on the KL (in mode '17 only!) called
SIX. Many different people can have it open at once, but it only makes
sense for each person (job) to have it opened once. You do an OUTPUT
to it to send a message to the 6 and you do an INPUT to receive a message
from the 6. In addition, there is a call (an MTAPE) to find out if there
is a message waiting for you to read it, and an interrupt bit you can
set to receive a user-interrupt each time a new message comes in.

The interrupt bit is called INTSIX and is the 40000 bit (bit 21) in the
right half of the interrupt word. See the chapter on the user interrupt
system in the UUO manual for how to use this bit.

When you CLOSE or RELEASE the device SIX, the system sends out an MCLRJOB
message automatically. This will clear everything the SIX knows about you,
will release any buffers you have claimed, will stop the real-time job if
you have initialized it, etc etc etc.

The exact monitor calls are as follows:


OUTPUT CHN,ADDR

ADDR:	IOWD WD,MA

This is the standard system OUTPUT UUO. It takes a single IOWD, not an IO command
list. This IOWD points to a single message. The first word (or the first
two words if it is a multiple-word message) must be in the message
header format described before. The system will deposit the sequence number
it assigns your message into the second word of the message (if any). The
message will be sent out (essentially) immediately. The maximum message
length is 1024 words. Anything longer than this must be broken up into 1K
pieces.


INPUT CHN,ADDR

ADDR:	IOWD WD,MA

This is the standard system INPUT UUO. Likewise, it takes a single IOWD, not
an IO command list. This IOWD points to a place where a single message will
be placed by the system. If there are no messages there for you, this UUO
will wait until one comes in (or forever if no messages come in). You will
only get messages that are specifically directed to your job. Generally this
will not happen unless you do something (send a message to the 6) to make
it send you messages. If the IOWD you give is not big enough to hold the
message, you will only get as much of it as will fit.


MTAPE CHN,ADDR
<Failure return>	; Meaning of this return depends on function
<Success return>

ADDR:	<Function code>
	<Some data may be returned here>

There are only two legal codes right now. Code=0 means "skip if anything
in input list for me". It returns you in ADDR+1 the length (total length,
including header) of the next message in your input queue. It skips if
there is anything in your input list and it does not skip if your input
list is empty (that is, if your next INPUT UUO would have to wait).

Code=1 means wait for something to come into your input list, then return
its length in ADDR+1. It never skips.


DISK TRANSFERS

Disk transfers to the 6 memory operate much the way that normal
disk transfers do, except that they take special monitor calls, and
that the error correction is not done for you. The ECC (error correction
code) bytes are returned to you and you have to send them to the 6 using
the MECC message.

The disk must be open in mode 17 (dump mode). You will get an illegal UUO
from the following MTAPEs if it is not open in mode 17.


MTAPE CHN,ADDR

ADDR:	SIXBIT /GODMOD/
	24		; Code for read, 25 for write
	IOWD WC,MA	; Memory address relative to 6 memory
	ECCADR		; Address (in your core image) where ECC data goes
	ECCWD1
	ECCWD2		; ECC status words
	BLOCK,,TRACK	; Only relevant on old format UDPs

This is how you read data from the disk into the 6 memory. You give an IOWD,
just like any other disk transfer (only dump mode, mode '17 is legal), only
the memory address you give in this IOWD refers to an absolute location in
the 6 memory, of which there is roughly 64K. The ECC data itself is two
words per entry. There may be up to 19 entries, so that your table of
the ECC data (which starts at location ECCADR) must be at least 38 words long.
Of these two words of data for each error, they are decoded as follows:

WORD 1		BYTE (12) BYTEC (24) BITS

BITS	PATTERN       NAME	INTERPRETATION
---------------------------------------------------------------------------
0:11	777700,,0     BYTEC	Byte number within ailing record of bad byte
12:35	77,,777777    BITS	3 ECC bytes to be XORed with the data


WORD 2		-WC,,P3ADDR

The first word gives the byte number within the ailing block of the first
bad byte, and the 3 ECC bytes to be XORed in with the data to make the
correction. The next word gives in the right half the absolute address
in the 6 memory of the first word (byte) of the ailing record. Thus you take
this word and start XORing bytes at BYTEC bytes into this record. The only
pecularity is the way the channel packs bytes to a word (THIS IS GOING
TO CHANGE!!!). The channel packs 9 bytes into 2 PDP-6 words in the following
manner:

  ***************************************************************
  *	       *            *            *            *         *
  *   BYTE 0   *   BYTE 1   *   BYTE 2   *   BYTE 3   * BYTE 4A *
  *	       *            *            *            *         *
  ***************************************************************

  ***************************************************************
  *	       *            *            *            *         *
  *   BYTE 5   *   BYTE 6   *   BYTE 7   *   BYTE 8   * BYTE 4B *
  *	       *            *            *            *         *
  ***************************************************************


BITS	PATTERN       NAME	INTERPRETATION
---------------------------------------------------------------------------
     ***WORD 1***
0:7	776000,,0     BYTE0	Entire byte 0
8:15	1774,,0	      BYTE1	Entire byte 1
16:23	3,,770000     BYTE2	Entire byte 2
24:31	7760	      BYTE3	Entire byte 3
32:35	17	      BYTE4a	High-order bits of byte 4
     ***WORD 2***
0:7	776000,,0     BYTE5	Entire byte 5
8:15	1774,,0	      BYTE6	Entire byte 6
16:23	3,,770000     BYTE7	Entire byte 7
24:31	7760	      BYTE8	Entire byte 8
32:35	17	      BYTE4b	Low-order bits of byte 4

Thusly, the high-order 4 bits of byte 4 go into the tail of the first word,
and the low-order 4 bits of byte four go into the tail of the second word.
So, if you decide you have to do this error correction yourself,
you have to decide first which word pair it is in, then figure out
what byte within the word pair it is, and start XORing. Luckily, the
6 subsystem will do this for you if you just send the MECC message.

ECCWD1 is set to various things describing the state of the transfer. If
the left half is zero, then no errors occurred. If there were
less than 19 errors, then the transfer is complete. In this case, the
ECCWD1 will be -N,,ADRS where ADRS is the first unused location in the
error correction data table (ECCADR) and -N is the number of words in
this 38 word table that are remaining. If the Left half of ECCWD1 is exactly
1, then the transfer is complete: there were more than 19 errors over
the transfer, and some ECC information was lost. You got corrections for
the first 19 errors, but then ECCWD2 will be the first absolute address in the 6
memory of the first record whose ECC information was lost. This ECC information
should be shipped out and the remainder of the transfer should be retried.
To retry, you will have to know how the addresses map into blocks and records.
For the regular disk and the new-style UDPs, it is very simple. There are
128 words to each record. For old-format UDPs, it is a little more complicated,
because you must give the disk address in terms of the track number and the
record number within that track (see the UUO manual). In old-format UDPs, there
are 19 records per track. The first record is 32 words long and every succeeding
record is 128 words long. Thus the length of the entire track is 32+18*128.


MTAPE CHN,ADDR

ADDR:	SIXBIT /GODMOD/
	25		; Code for write
	IOWD WC,MA	; Memory address relative to 6 memory
	BLOCK,,TRACK	; Only relevant on old format UDPs

Since there can be no errors on output (according to the disk manual), there
is no need for ECC. Thusly, it is much simpler to write from the 6 memory.
Things should be pretty self-explanatory by this point.

173.
.FSLIMIT:
	The LOCK UUO implementation has been changed.  The organization of core
	is as follows:  SYSTEM, FREE STORAGE, USERS.  It does not matter where
	the 256K word boundary is, as long as it is after the end of free storage.
	The end of the system is marked by SYSTOP and the end of free storage
	is marked by FSTOP (SYSPAG and FSPAG are page rather than word versions
	of the same values).  User core is everything after FSTOP.  If free storage
	needs to expand, then the user at FSTOP is swapped out.  If a job were
	locked in core at FSTOP he might get swapped out.  To get around this,
	user core is divided into two regions, high and low, which are exactly
	the same, except that locked jobs are only in the high region.  The
	dividing line between the high and low regions is called FSLIMIT and
	is set big enough so that free storage will never get that big.  The
	process of locking a job in core involves first checking to see if
	it is entirely in the high region.  If it is, the JLOCK bit is set in
	JBTSTS and the job is considered locked.  If not, then the job is swapped
	out and the LOKSWP bit is set instead.  This bit indicates to the swapper
	that the job must be swapped into the high region.  The job will be
	swapped in when there is enough high region core available for it and
	then the LOKSWP bit will be turned off and the JLOCK bit turned on.

174.  If the 1000 bit (RAQBIT) is set in the device status word for the disk,
      then when an ENTER is done to go into read-alter mode, the dates and
      times from the ENTER block will be ignored and the current date will
      NOT be written in the file for the last written and last referenced fields.
      In fact, the file will not be changed (written) at ENTER time at all.
      Programs that enter huge files in read-alter mode should set this bit to
      save time and disk ops.

175.  More TTYSET functions have been added.  See UUO.ME[S,DOC].

176.  BEEP and ADSMAP UUOs affect the "responsible TTY".
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
177.  TTYSET function 17 (get responsible TTY) returns -1 if no TTY
      is responsible.  Also, if you look in the system (eg, via PEEK
      or SETPR2) to find the terminal responsible for some TTY line,
      a value of 12 (TTY12) for the responsible terminal really means
      that no one is responsible for the particular TTY line.

178.  A beep to a (responsible) non-ARPA PTY is a no-op.

179.  Somehow this didn't make it into the third edition:

      The SUPSOM bit (0,,1000) in the fourth word of a SETACT UUO
      activation table suppresses the CONTROL and META bits on all
      characters whose individual character bits are not on in the
      activation table.  This means that the activation table's
      character bits are used for two purposes--in special activation
      mode and in SUPSOM mode--but these two modes are not expected
      to be in use at the same time.  If SUPEOL is on, it takes
      precedence over SUPSOM.

180.  Error code 7 (GMM) to an IMP MTAPE means Gender MisMatch; ie, an
      attempt to connect two like-gendered sockets together.  Odd sockets
      may only be connected to even sockets and vice versa.

181.  XGP intercharacter spacing ('177 '1 '50 ICS) is now implemented.
      It takes one 7-bit byte as the new value for intercharacter
      spacing.  The intercharacter spacing is set to zero when you INIT
      the XGP, but is not reset to zero at any other time.  The
      intercharacter spacing value is the (positive) number of columns by
      which the X-position is incremented after each normal text
      character is printed (after the X-adjustment for character width).
      It is possible that use of this feature may generate lines that are
      too complex for XGPSER to print (usual warning).

182.  The system now allows up to =128 fonts.  Soon the font compiler
      will too.  (Until then, wait.)

183.  XGP MTAPE 7 is just like XGP MTAPE 1 (compiles a font) except that
      a four-word table follows the font identification number to specify
      which characters are to be compiled.  The format of this 4-word
      table will be explained after the font compiler has been made to
      understand it.  (Until then, wait again.)

184.  XGPUUO opcode 4 from the system to the Font Compiler is just like
      opcode 2 except that words 5 through 10 (octal) of the data block
      contain the four words from the user specifying which characters
      are to be compiled.

185.  XGP ESCAPE 5 selects the font specified by the following 7-bit byte
      (e.g., '177 '5 FONT).